package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.LedInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护信息板点位信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */
public interface DubboLedInfoService {

	/**
	 * 返回所有信息板点位信息
	 * @return ResultPojo 所有信息板点位信息
	 */
	public ResultPojo getLedInfo();
	
	/**
	 * 返回所有信息板点位信息
	 * @return ResultPojo 所有信息板点位信息
	 */
	public ResultPojo getLedInfoList(String ledId, String ledName, String letterAbbr, String deviceStatusCode,
			String project, String manufact, String regionId, String manageDept, String purposeCode, String consTypeCode, String ctrlTypeCode, String orderSeq);
	/**
	 * 分页返回所有信息板点位信息
	 * @param page 分页对象
	 * @return ResultPojo 包含信息板点位信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageLedInfo(Page page);
	
	/**
	 * 分页返回所有信息板点位信息
	 * @param page 分页对象
	 * @param ledId 信息板点位编码
	 * @param ledName 信息板点位名称
	 * @param ledTypeCode 信息板类型
	 * @param purposeCode 信息板用途
	 * @return ResultPojo 包含信息板点位信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageLedInfo(Page page,String ledId,String ledName,String regionId,String directCode,String ledTypeCode,String purposeCode);
	
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageLedInfo(Page page, String ledId, String ledName,String letterAbbr,String deviceStatusCode,
			String project, String manufact, String regionId, String manageDept, String purposeCode, String consTypeCode, 
			String ctrlTypeCode, String orderSeq,String netMode);
	/**
	 * 返回指定编码的信息板点位信息
	 * @param ledId 信息板点位编码
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoById(String ledId);
	
	/**
	 * 按名称匹配并返回信息板点位信息
	 * @param ledName 信息板点位名称
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByName(String ledName);
	
	/**
	 * 按所属区域返回信息板点位信息
	 * @param regionId 区域编码
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByRegion(String regionId);
	
	/**
	 * 按朝向返回信息板点位信息
	 * @param directCode 点位朝向
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByDirect(String directCode);
	
	/**
	 * 按类型返回信息板点位信息
	 * @param ledType 信息板类型
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByType(String ledType);
	
	/**
	 * 按用途返回信息板点位信息
	 * @param purposeCode 信息板用途
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByPurpose(String purposeCode);
	
	/**
	 * 返回若干指定编码的信息板点位信息
	 * @param ledIds 由若干信息板点位编码构成的数组
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByIds(String[] ledIds);
	
	
	
	/**
	 * 按名称和用途返回信息板点位信息
	 * @param ledName 信息板点位名称
	 * @param purposeCode 信息板用途
	 * @return ResultPojo 信息板点位信息
	 */
	public ResultPojo getLedInfoByNamePurpose(String ledName, String purposeCode); 
	
	/**
	 * 返回与输入前缀相匹配的最大信息板编码值，用于手工生成新的信息板编码
	 * @param prefixLedId 信息板编码前缀
	 * @return String 与前缀相匹配的最大信息板编码值
	 */
	public String getMaxLedId(String prefixLedId);
	
	/**
	 * 添加一条信息板点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param ledInfoDto 信息板点位信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addLedInfo(String token, LedInfoDto ledInfoDto);
	
	/**
	 * 修改一条信息板点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param ledInfoDto 信息板点位信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editLedInfo(String token, LedInfoDto ledInfoDto);
	
	/**
	 * 删除指定编码的信息板点位信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param ledId 信息板点位编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeLedInfo(String token, String ledId);
}
